package com.smedi.ismedi.progress.api.dto.request;

import com.smedi.ismedi.progress.api.dto.response.ConstructionLogContentResponse;
import com.smedi.ismedi.progress.api.dto.response.FileResponse;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.sql.Date;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 施工日志入参
 *
 * @author pengyan
 * @date 2022/09/20
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "施工日志入参")
public class ConstructionLogSaveAndDraftRequest implements Serializable {

    /**
     * 主表id
     */
    @ApiModelProperty(value = "主表id")
    private Long id;

    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    private Long projectId;
    /**
     * 项目名称
     */
    @ApiModelProperty(value = "项目名称")
    private String projectName;

    /**
     * 记录人
     */
    @ApiModelProperty(value = "记录人")
    private String recordUser;

    /**
     * 日志日期
     */
    @ApiModelProperty(value = "日志日期")
    private LocalDate logDate;

    /**
     * 记录时间
     */
    @ApiModelProperty(value = "记录时间")
    private LocalDateTime recordTime;

    /**
     * 天气情况
     */
    @ApiModelProperty(value = "天气情况")
    private String weather;

    /**
     * 阅读状态 1、未读；2、已读
     */
    @ApiModelProperty(value = "阅读状态 1、未读；2、已读")
    private Long readingStatus;
    /**
     * 状态 1、草稿；2、已发布；3、已审阅
     */
    @ApiModelProperty(value = "状态 1、草稿；2、已发布；3、已审阅")
    private Long status;

    /**
     * 现场施工机械安排情况
     */
    @ApiModelProperty(value = "现场施工机械安排情况")
    private String mechanicalArrange;
    /**
     * 原材料进厂记录（数量、牌号、是否已质量复试及现场抽样检测情况等）
     */
    @ApiModelProperty(value = "原材料进厂记录（数量、牌号、是否已质量复试及现场抽样检测情况等）")
    private String materialsRecord;

    /**
     *  质量、安全、设备事故（或未遂事故）发生的原因、处理意见和处理方法
     */
    @ApiModelProperty(value = "质量、安全、设备事故（或未遂事故）发生的原因、处理意见和处理方法")
    private String accidentDealMethods;

    /**
     * 其他特殊情况（停电、停水、停工、窝工等）
     */
    @ApiModelProperty(value = "其他特殊情况（停电、停水、停工、窝工等）")
    private String otherSpecialSituation;

    /**
     * 施工内容
     */
    @ApiModelProperty(value = "施工内容")
    private List<ConstructionLogContentRequest> constructionLogContents;

    /**
     * 附件
     */
    @ApiModelProperty(value = "附件")
    private List<ConstructionLogFileRequest> fileList;

    /***
     *发布/保存草稿 方法 处理方式
     */
    @ApiModelProperty(value = "发布/保存草稿 方法 处理方式 DRAFT：保存草稿  RELEASE：发布")
    @NotNull(message = "处理方式不能为空")
    private  String  method;

}
